Added factory method
Added test for factory method
Added "not implemented" error message and related code
Added specific exceptions
updated composer file