added factory method + object classes
added factory method + object classes
Merge remote-tracking branch 'origin/master'
see commits before just merge