refactor to allow for callbacks and setting width and height on placeholder