[refac] splited functionality into multiple functions
[refac] space sanity
[refac] changed the calling convention to be more generic
[refac] added *layer* infix
[refac] final factory and configuration modifications