Add max height & width parameters
Refactor, add unit test