refactor objects into Model and add Limit order support