cleanup dependencies
added factory method