public function find( $columns = array(), $conditions = array(), $orders = array(), $limits = array(), $groupings = array(), $havings = array() ){
		$this->validateColumns( $columns );
		$conditions	= $this->getConditionQuery( $conditions, FALSE, FALSE, TRUE );					//  render WHERE clause if needed, uncursored, allow functions
		$conditions = $conditions ? ' WHERE '.$conditions : '';
		$orders		= $this->getOrderCondition( $orders );											//  render ORDER BY clause if needed
		$limits		= $this->getLimitCondition( $limits );											//  render LIMIT BY clause if needed
		$groupings	= !empty( $groupings ) ? ' GROUP BY '.join( ', ', $groupings ) : '';			//  render GROUP BY clause if needed
		$havings 	= !empty( $havings ) ? ' HAVING '.join( ' AND ', $havings ) : '';				//  render HAVING clause if needed
		$columns	= $this->getColumnEnumeration( $columns );										//  get enumeration of masked column names
		$query		= 'SELECT '.$columns.' FROM '.$this->getTableName();							//  render base query

		$query		= $query.$conditions.$groupings.$havings.$orders.$limits;						//  append rendered conditions, orders, limits, groupings and havings
		$resultSet	= $this->dbc->query( $query );
		if( $resultSet )
			return $resultSet->fetchAll( $this->getFetchMode() );
		return array();
	}